package com.lemon.springcloud.core.listener;

import org.springframework.context.ApplicationContext;

import java.util.Map;

/**
 * @author hdzhang
 * @ClassName LemonBootStarterListener
 * @desc
 * @Date 2018/9/7 21:33
 * @Version 1.0
 **/
public interface LemonBootStarterListener {

    /**
     * 返回Starter的名称
     *
     * @return 启动器名称
     */
    String starterName();

    /**
     * 收集Starter的配置信息,会在启动配置数据中进行组装和接口页面显示
     *
     * @return 配置信息
     */
    Map<String, Object> starterInfoCollect();

    /**
     * Spring Starting后事件,可预处理Spring加载前
     */
    void onStarting();

    /**
     * Spring Context准备完成事件
     *
     * @param context ApplicationContext
     */
    void onPrepared(ApplicationContext context);

    /**
     * Spring 初始化完成,所有就绪
     *
     * @param context ApplicationContext
     */
    void onFinished(ApplicationContext context);
}
